/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bomberman.pl.divano.server;

import bomberman.pl.divano.gra.Gra;
import bomberman.pl.divano.gra.STAŁE;
import bomberman.pl.divano.gra.Zmiany;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;



/**
 *
 * @author divano
 */
public class SerwerOdbiorca implements Runnable {
 
    private Socket klient;
    private ObjectInputStream wejscieObiektów;
    private Gra bomberman;
    private SerwerNadawca nadajacy;
    private boolean petla;
    //private ObjectOutputStream wyjscieObiektów;

    public SerwerOdbiorca(Socket klient, Gra arg, SerwerNadawca nad) throws IOException {
        this.klient = klient;
        System.out.println("Polaczono");
        wejscieObiektów = new ObjectInputStream(this.klient.getInputStream());
        bomberman = arg;
        this.nadajacy = nad;
    }

    public Object odbierzObiekt() throws IOException, ClassNotFoundException {
        Object arg = null;
        try {
            arg = wejscieObiektów.readObject();
            //System.out.println("Odebrano");
        } catch (IOException ex) {
            //Logger.getLogger(SerwerOdbiorca.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Odłączył sie klient");
            petla = false;
        } finally {
        }
        return arg;
    }

    public void run() {

        try {
            
            petla = true;
            Object tmp;
            while(petla){
                tmp = odbierzObiekt();
                if(tmp != null ){
                    bomberman.setZmiany((Zmiany)tmp);
                }
            }
            Zmiany usunAktora = new Zmiany(0, 0, STAŁE.AKTOR, false, true, 0, klient.hashCode());
            bomberman.setZmiany(usunAktora);
            nadajacy.zakoncz(klient);
            klient.close();
        } catch (IOException ex) {
            Logger.getLogger(SerwerOdbiorca.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(SerwerOdbiorca.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
